<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    //21-04-26-午 
    //21-05-16-夜 补充

    //arguments;所有实参的集合,属于类数组；
    //arguments (形参列表)
    //js中每一个函数不包括箭头函数 内部能访问一个特别的变量arguments 这个变量维护所以传入 这个函数中的参数列表 
    //arguments是函数内置的，所以在函数内部无需声明即可直接使用；
    //arguments变量不是一个数组 在语法上 他有数组的length 但它不从Array.prototype继承 实际上是一个对象

    //因此 无法对arguments 变量使用标准的数组方法 比如push pop... 
    //虽然使用for循环是可以的 都是为了更好的使用数组方法 最好把它转为一个真正的数组 

   

    /*
    function fn(a,b){
        for(var i=0;i<arguments.length;i++){
             console.log(arguments[i])
        }
        }
        fn(10,20)     // 10 20     
    */


    //arguments对象只定义在函数体中 从技术上来说 arguments对象不是数组 但是它拥有数值的属性和length属性 
    //主要用途 用来判断有多少个参数传入函数 还可以指代未命名的参数 外加length属性 外加擦亮了二属性指代匿名函数本身  

    //使用Array.prototype.slice将arguments对象转换成一个数组。
    function one() {
      return Array.prototype.slice.call(arguments);
    }
    //转化为数组 
    //创建一个新的数组 包含所有的arguments 对象中的元素 
    Array.prototype.slice.call(arguments);
</script>